package com.zj.wanandroid.utils

import com.zj.wanandroid.data.bean.UserInfo
import com.zj.wanandroid.data.store.DataStoreUtils

// 用户状态管理工具类（单例模式）
object AppUserUtil {
    // 私有常量：数据存储键名
    private const val LOGGED_FLAG = "logged_flag"  // 登录状态标记
    private const val USER_INFO = "user_info"     // 用户信息存储键

    // 用户登录状态（布尔值，持久化存储）
    var isLogged: Boolean
        get() = DataStoreUtils.readBooleanData(LOGGED_FLAG, false)  // 读取登录状态，默认false
        set(value) = DataStoreUtils.saveSyncBooleanData(LOGGED_FLAG, value = value)  // 同步保存登录状态

    // 用户信息（对象类型，持久化存储）
    var userInfo: UserInfo?
        get() = DataStoreUtils.readStringData(USER_INFO).fromJson()  // 读取用户信息并反序列化
        set(value) = DataStoreUtils.saveSyncStringData(USER_INFO, value = value?.toJson() ?: "")  // 保存用户信息并序列化为JSON字符串

    // 用户登录处理
    fun onLogin(userInfo: UserInfo) {
        isLogged = true        // 设置登录状态
        this.userInfo = userInfo  // 保存用户信息
    }

    // 用户登出处理
    fun onLogOut() {
        isLogged = false       // 清除登录状态
        this.userInfo = null    // 清除用户信息
    }
}